home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / PCCardEnablerPlugin.p < prev    next >
Encoding:
Text File  |  1997-08-12  |  14.9 KB  |  296 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        PCCardEnablerPlugin.p
  3.  
  4.      Contains:    ???
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1997 by Apple Computer, Inc. and SystemSoft Corporation.  All rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT PCCardEnablerPlugin;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __PCCARDENABLERPLUGIN__}
  28. {$SETC __PCCARDENABLERPLUGIN__ := 1}
  29.  
  30. {$I+}
  31. {$SETC PCCardEnablerPluginIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __NAMEREGISTRY__}
  38. {$I NameRegistry.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __INTERRUPTS__}
  41. {$I Interrupts.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __PCCARD__}
  44. {$I PCCard.p}
  45. {$ENDC}
  46.  
  47.  
  48. {$PUSH}
  49. {$ALIGN POWER}
  50. {$LibExport+}
  51.  
  52. {$IFC UNDEFINED __CARDSERVICES__ }
  53. {
  54.     NOTE: These prototypes conflict with CardServices.≈
  55.           You cannot use both PCCardEnablerPlugin.h and CardServices.h
  56.           
  57. }
  58.  
  59. {    Copyright:    © 1996 SystemSoft Corporation, all rights reserved. }
  60. {------------------------------------------------------------------------------------
  61.     Card Services calls exported by the Family
  62. ------------------------------------------------------------------------------------}
  63. {     Card Services for Card Enablers }
  64.  
  65. FUNCTION CSGetCardServicesInfo(VAR socketCount: UInt32; VAR complianceLevel: UInt32; VAR version: UInt32): OSStatus; C;
  66.  
  67. {  Function prototypes for tuples calls  }
  68.  
  69. FUNCTION CSGetFirstTuple(socket: PCCardSocket; device: UInt32; tupleIterator: PCCardTupleIterator; desiredTuple: ByteParameter; tupleData: UNIV Ptr; VAR tupleBufferSize: ByteCount; VAR foundTuple: Byte): OSStatus; C;
  70. FUNCTION CSGetNextTuple(tupleIterator: PCCardTupleIterator; desiredTuple: ByteParameter; tupleData: UNIV Ptr; VAR tupleBufferSize: ByteCount; VAR foundTuple: Byte): OSStatus; C;
  71.  
  72. {  Function prototypes for window calls }
  73.  
  74. FUNCTION CSRequestWindow(vSocket: PCCardSocket; device: UInt32; windowAttributes: PCCardWindowAttributes; windowSpeed: PCCardAccessSpeed; VAR windowBase: LogicalAddress; VAR windowSize: PCCardWindowSize; VAR windowOffset: PCCardWindowOffset; VAR requestedWindow: PCCardWindowID): OSStatus; C;
  75. FUNCTION CSReleaseWindow(windowToRelease: PCCardWindowID): OSStatus; C;
  76. FUNCTION CSModifyWindow(windowToModify: PCCardWindowID; windowAttributes: PCCardWindowType; memorySpeed: PCCardAccessSpeed; VAR windowOffset: PCCardWindowOffset): OSStatus; C;
  77. FUNCTION CSGetWindowBaseAddress(window: PCCardWindowID; VAR baseAddress: LogicalAddress): OSStatus; C;
  78. FUNCTION CSInquireWindow(vSocket: PCCardSocket; device: UInt32; windowID: PCCardWindowID; VAR windowAttributes: PCCardWindowAttributes; VAR windowParam: PCCardAccessSpeed; VAR windowBase: UInt32; VAR windowSize: PCCardWindowSize; VAR windowOffset: PCCardWindowOffset): OSStatus; C;
  79. {  Function prototypes for CIS calls }
  80.  
  81. FUNCTION CSValidateCIS(vSocket: PCCardSocket; device: UInt32; VAR cisChainCount: UInt32): OSStatus; C;
  82. FUNCTION CSGetDeviceCount(vSocket: PCCardSocket; VAR deviceCount: UInt32): OSStatus; C;
  83.  
  84. {  Function prototypes for Status calls }
  85.  
  86. FUNCTION CSGetStatus(vSocket: PCCardSocket; VAR currentState: UInt32; VAR changedState: UInt32; VAR Vcc: PCCardVoltage; VAR Vpp: PCCardVoltage): OSStatus; C;
  87.  
  88. {  Function prototypes for configuration calls }
  89.  
  90. FUNCTION CSRequestConfiguration(vSocket: PCCardSocket; device: UInt32; configOptions: PCCardConfigOptions; socketInterface: PCCardInterfaceType; customInterface: PCCardCustomInterfaceID; vcc: PCCardVoltage; vpp: PCCardVoltage; IRQ: PCCardIRQ; DMA: PCCardDMA; configRegBaseAddress: UInt32; configRegPresentMask: PCCardConfigPresentMask; VAR configReg: PCCardFunctionConfigReg): OSStatus; C;
  91. FUNCTION CSModifyConfiguration(vSocket: PCCardSocket; device: UInt32; modifyAttributes: PCCardConfigOptions; IRQ: PCCardIRQ; DMA: PCCardDMA; Vpp: PCCardVoltage): OSStatus; C;
  92. FUNCTION CSReleaseConfiguration(vSocket: PCCardSocket; device: UInt32): OSStatus; C;
  93. FUNCTION CSSetRingIndicate(vSocket: PCCardSocket; setRingIndicate: BOOLEAN): OSStatus; C;
  94. FUNCTION CSResetFunction(vSocket: PCCardSocket; device: UInt32): OSStatus; C;
  95. FUNCTION CSReadConfigurationRegister(vSocket: PCCardSocket; device: UInt32; whichRegister: PCCardConfigPresentMask; configRegBaseAddress: UInt32; VAR registerValue: UInt8): OSStatus; C;
  96. FUNCTION CSWriteConfigurationRegister(vSocket: PCCardSocket; device: UInt32; whichRegister: PCCardConfigPresentMask; configRegBaseAddress: UInt32; registerValue: ByteParameter): OSStatus; C;
  97. { Function prototypes for Client Support calls}
  98. FUNCTION CSRegisterClient(vSocket: PCCardSocket; eventMask: PCCardEventMask; clientCallBack: PCCardEventHandler; clientParam: UNIV Ptr; VAR newClientID: PCCardClientID): OSStatus; C;
  99. FUNCTION CSDeRegisterClient(theClientID: PCCardClientID): OSStatus; C;
  100. FUNCTION CSSetEventMask(theClientID: PCCardClientID; newEventMask: PCCardEventMask): OSStatus; C;
  101. FUNCTION CSGetEventMask(theClientID: PCCardClientID; VAR newEventMask: PCCardEventMask): OSStatus; C;
  102. FUNCTION CSRegisterTimer(registeredClientID: PCCardClientID; VAR lpNewTimerID: PCCardTimerID; delay: LONGINT): OSStatus; C;
  103. FUNCTION CSDeRegisterTimer(timerID: PCCardTimerID): OSStatus; C;
  104. { Function prototypes for CardBus Config Space access}
  105. FUNCTION CSReadCardBusConfigSpace(vSocket: PCCardSocket; device: UInt32; configOffset: UInt32; VAR data: Byte; dataSize: UInt32): OSStatus; C;
  106. FUNCTION CSWriteCardBusConfigSpace(vSocket: PCCardSocket; device: UInt32; configOffset: UInt32; VAR data: Byte; dataSize: UInt32): OSStatus; C;
  107. {------------------------------------------------------------------------------------
  108.     Card Enabler Types
  109. ------------------------------------------------------------------------------------}
  110.  
  111. CONST
  112.     kUnknownDeviceType            = 'unkn';
  113.     kDisplayDeviceType            = 'dspl';
  114.     kBlockDeviceType            = 'blok';
  115.     kByteDeviceType                = 'byte';
  116.     kNetworkDeviceType            = 'netw';
  117.     kSerialDeviceType            = 'ser ';
  118.     kParallelDeviceType            = 'parl';
  119.     kMemoryDeviceType            = 'mem ';
  120.     kAIMSDeviceType                = 'aims';
  121.     kSCSIDeviceType                = 'scsi';
  122.  
  123.  
  124. TYPE
  125.     PCDeviceType                        = OSType;
  126.  
  127. CONST
  128.     kAttributeType                = 0;
  129.     kMemoryType                    = 1;
  130.     kIOType                        = 2;
  131.  
  132.  
  133. TYPE
  134.     PCCardMemoryType                    = UInt32;
  135.  
  136. CONST
  137.     kUnknown                    = 'unkn';
  138.     kPCCard16                    = 'pc16';
  139.     kCardBus                    = 'cdbs';
  140.  
  141.  
  142. TYPE
  143.     PCCardArchitectureType                = OSType;
  144.  
  145. {------------------------------------------------------------------------------------
  146.   Plugin Dispatch Table
  147. ------------------------------------------------------------------------------------}
  148.  
  149. CONST
  150.     kServiceTypePCCardEnabler    = 'card';
  151.     kPCCardEnablerPluginVersion    = $00000001;
  152.     kPCCardEnablerPluginCurrentVersion = $00000001;
  153.  
  154. {    Card Enabler Entrypoints}
  155.  
  156. TYPE
  157.     CEValidateHardwareProc = ProcPtr;  { FUNCTION CEValidateHardwareProc((CONST)VAR cardRef: RegEntryID): OSStatus; C; }
  158.  
  159.     CEInitializeProc = ProcPtr;  { FUNCTION CEInitializeProc((CONST)VAR cardRef: RegEntryID; replacingOld: BOOLEAN): OSStatus; C; }
  160.  
  161.     CECleanupProc = ProcPtr;  { FUNCTION CECleanupProc((CONST)VAR cardRef: RegEntryID; beingReplaced: BOOLEAN): OSStatus; C; }
  162.  
  163.     CEPowerManagementProc = ProcPtr;  { FUNCTION CEPowerManagementProc((CONST)VAR lpCardEntry: RegEntryID; powerLevel: PCCardPowerOptions): OSStatus; C; }
  164.  
  165.     CEHandleEventProc = ProcPtr;  { FUNCTION CEHandleEventProc((CONST)VAR cardRef: RegEntryID; theEvent: PCCardEvent): OSStatus; C; }
  166.  
  167.     CEGetCardInfoProc = ProcPtr;  { FUNCTION CEGetCardInfoProc((CONST)VAR cardRef: RegEntryID; VAR cardType: PCCardDevType; VAR cardSubType: PCCardSubType; cardName: StringPtr; vendorName: StringPtr): OSStatus; C; }
  168.  
  169.     CEAddCardPropertiesProc = ProcPtr;  { FUNCTION CEAddCardPropertiesProc((CONST)VAR cardRef: RegEntryID): OSStatus; C; }
  170.  
  171.     CEGetDeviceCountProc = ProcPtr;  { FUNCTION CEGetDeviceCountProc((CONST)VAR cardRef: RegEntryID; VAR numberOfDevices: ItemCount): OSStatus; C; }
  172.  
  173.     CEGetDeviceNameProc = ProcPtr;  { FUNCTION CEGetDeviceNameProc(socketNumber: UInt32; deviceNumber: UInt32; deviceName: CStringPtr): OSStatus; C; }
  174.  
  175.     CEGetDeviceCompatibleProc = ProcPtr;  { FUNCTION CEGetDeviceCompatibleProc((CONST)VAR deviceRef: RegEntryID; socketNumber: UInt32; deviceNumber: UInt32; name: CStringPtr): OSStatus; C; }
  176.  
  177.     CEGetDeviceTypeProc = ProcPtr;  { FUNCTION CEGetDeviceTypeProc((CONST)VAR deviceRef: RegEntryID; socketNumber: UInt32; deviceNumber: UInt32; VAR lpDeviceType: PCDeviceType): OSStatus; C; }
  178.  
  179.     CEGetDeviceTypeNameProc = ProcPtr;  { FUNCTION CEGetDeviceTypeNameProc((CONST)VAR deviceRef: RegEntryID; socketNumber: UInt32; deviceNumber: UInt32; name: CStringPtr): OSStatus; C; }
  180.  
  181.     CEAddDevicePropertiesProc = ProcPtr;  { FUNCTION CEAddDevicePropertiesProc((CONST)VAR deviceRef: RegEntryID; device: UInt32): OSStatus; C; }
  182.  
  183.     CEConfigureDeviceProc = ProcPtr;  { FUNCTION CEConfigureDeviceProc((CONST)VAR deviceRef: RegEntryID; deviceNumber: UInt32): OSStatus; C; }
  184.  
  185.     CEFinalizeDeviceProc = ProcPtr;  { FUNCTION CEFinalizeDeviceProc(socket: UInt32; device: UInt32; (CONST)VAR deviceRef: RegEntryID): OSStatus; C; }
  186.  
  187.     CEValidateCISProc = ProcPtr;  { FUNCTION CEValidateCISProc(socket: UInt32; device: UInt32; VAR lpCISChainCount: UInt32): OSStatus; C; }
  188.  
  189.     CEGetFirstTupleProc = ProcPtr;  { FUNCTION CEGetFirstTupleProc(socket: UInt32; device: UInt32; lpTupleIterator: PCCardTupleIterator; desiredTuple: ByteParameter; lptupleData: UNIV Ptr; VAR lpTupleBufferSize: UInt32; VAR lpFoundTuple: Byte): OSStatus; C; }
  190.  
  191.     CEGetNextTupleProc = ProcPtr;  { FUNCTION CEGetNextTupleProc(lpTupleIterator: PCCardTupleIterator; desiredTuple: ByteParameter; lptupleData: UNIV Ptr; VAR lpTupleBufferSize: UInt32; VAR lpFoundTuple: Byte): OSStatus; C; }
  192.  
  193.     PCCardEnablerPluginHeaderPtr = ^PCCardEnablerPluginHeader;
  194.     PCCardEnablerPluginHeader = RECORD
  195.         pluginDispatchTableVersion: UInt32;
  196.         reserved1:                UInt32;
  197.         reserved2:                UInt32;
  198.         reserved3:                UInt32;
  199.     END;
  200.  
  201.     PCCardEnablerPluginDispatchTablePtr = ^PCCardEnablerPluginDispatchTable;
  202.     PCCardEnablerPluginDispatchTable = RECORD
  203.         header:                    PCCardEnablerPluginHeader;
  204.                                                                         {  General functions }
  205.         validateHardwareProc:    CEValidateHardwareProc;
  206.         initializeProc:            CEInitializeProc;
  207.         cleanUpProc:            CECleanupProc;
  208.         setPCCardPowerLevel:    CEPowerManagementProc;
  209.                                                                         {  Card functions }
  210.         handleEventProc:        CEHandleEventProc;
  211.         getCardInfoProc:        CEGetCardInfoProc;
  212.         addCardProperties:        CEAddCardPropertiesProc;
  213.         getDeviceCount:            CEGetDeviceCountProc;
  214.                                                                         {  Device functions }
  215.         getDeviceName:            CEGetDeviceNameProc;
  216.         getDeviceCompatibleNames: CEGetDeviceCompatibleProc;
  217.         getDeviceType:            CEGetDeviceTypeProc;
  218.         getDeviceTypeName:        CEGetDeviceTypeNameProc;
  219.         addDeviceProperties:    CEAddDevicePropertiesProc;
  220.         configureDevice:        CEConfigureDeviceProc;
  221.         finalizeDevice:            CEFinalizeDeviceProc;
  222.                                                                         {  Card Services Overrides... }
  223.         validateCIS:            CEValidateCISProc;
  224.         getFirstTuple:            CEGetFirstTupleProc;
  225.         getNextTuple:            CEGetNextTupleProc;
  226.                                                                         {  InterruptHandlers... }
  227.         cardInterruptHandlerFunction: InterruptHandler;
  228.         cardInterruptEnableFunction: InterruptEnabler;
  229.         cardInterruptDisableFunction: InterruptDisabler;
  230.     END;
  231.  
  232. {------------------------------------------------------------------------------------
  233.     PC Card Enabler Utility calls exported by the Family
  234. ------------------------------------------------------------------------------------}
  235. {    Generic Enabler Entrypoints}
  236. FUNCTION CEInitializeCard({CONST}VAR cardRef: RegEntryID; replacingOld: BOOLEAN): OSStatus; C;
  237. FUNCTION CEFinalizeCard({CONST}VAR cardRef: RegEntryID; beingReplaced: BOOLEAN): OSStatus; C;
  238. FUNCTION CEPowerManagement({CONST}VAR lpParentID: RegEntryID; powerLevel: PCCardPowerOptions): OSStatus; C;
  239. FUNCTION CEHandleCardEvent({CONST}VAR cardRef: RegEntryID; lTheCardEvent: PCCardEvent): OSStatus; C;
  240. FUNCTION CEGetCardInfo({CONST}VAR cardRef: RegEntryID; VAR cardType: PCCardDevType; VAR cardSubType: PCCardSubType; cardName: StringPtr; vendorName: StringPtr): OSStatus; C;
  241. FUNCTION CEAddCardProperties({CONST}VAR cardRef: RegEntryID): OSStatus; C;
  242. FUNCTION CEGetDeviceCount({CONST}VAR cardRef: RegEntryID; VAR numberOfDevices: ItemCount): OSStatus; C;
  243. {  device functions }
  244. FUNCTION CEGetDeviceName(socketNumber: UInt32; deviceNumber: UInt32; deviceName: CStringPtr): OSStatus; C;
  245. FUNCTION CEGetDeviceCompatibleNames({CONST}VAR deviceRef: RegEntryID; socketNumber: UInt32; deviceNumber: UInt32; name: CStringPtr): OSStatus; C;
  246. FUNCTION CEGetDeviceType({CONST}VAR deviceRef: RegEntryID; socketNumber: UInt32; deviceNumber: UInt32; VAR lpDeviceType: PCDeviceType): OSStatus; C;
  247. FUNCTION CEGetDeviceTypeName({CONST}VAR deviceRef: RegEntryID; socketNumber: UInt32; deviceNumber: UInt32; name: CStringPtr): OSStatus; C;
  248. FUNCTION CEAddDeviceProperties({CONST}VAR deviceRef: RegEntryID; deviceNumber: UInt32): OSStatus; C;
  249. FUNCTION CEConfigureDevice({CONST}VAR deviceRef: RegEntryID; deviceNumber: UInt32): OSStatus; C;
  250. FUNCTION CEFinalizeDevice(socket: UInt32; device: UInt32; {CONST}VAR deviceRef: RegEntryID): OSStatus; C;
  251.  
  252. {    RegEntryID <-> socket number mapping functions}
  253. FUNCTION CEGetSocketAndDeviceFromRegEntry({CONST}VAR lpNode: RegEntryID; VAR lpSocket: UInt32; VAR lpDevice: UInt32): OSStatus; C;
  254. FUNCTION CEGetPhysicalSocketNumber({CONST}VAR socketRef: RegEntryID; {CONST}VAR lpDeviceEntry: RegEntryID; VAR lpPhysicalSocketNumber: UInt32): OSStatus; C;
  255. {    Hardware Validation Utilities}
  256. FUNCTION CECompareCISTPL_VERS_1({CONST}VAR cardRef: RegEntryID; majorVersion: ByteParameter; minorVersion: ByteParameter; manufacturer: ConstCStringPtr; productName: ConstCStringPtr; info1: ConstCStringPtr; info2: ConstCStringPtr; VAR identical: BOOLEAN): OSStatus; C;
  257. FUNCTION CECompareCISTPL_MANFID({CONST}VAR cardRef: RegEntryID; manufacturerCode: UInt16; manufacturerInfo: UInt16; VAR identical: BOOLEAN): OSStatus; C;
  258. FUNCTION CECompareMemory({CONST}VAR cardRef: RegEntryID; memType: PCCardMemoryType; offset: ByteCount; length: ByteCount; VAR dataToCompare: Byte; VAR identical: BOOLEAN): OSStatus; C;
  259. FUNCTION CEValidateCIS(socket: UInt32; device: UInt32; VAR lpCISChainCount: UInt32): OSStatus; C;
  260. FUNCTION CEDefaultInterruptHandler(ISTmember: InterruptSetMember; refCon: UNIV Ptr; theIntCount: UInt32): InterruptMemberNumber; C;
  261.  
  262. {------------------------------------------------------------------------------------
  263.     PC Card Customization Resources
  264. ------------------------------------------------------------------------------------}
  265.  
  266. CONST
  267.     kPCCardCustomInfoResType    = 'pccd';
  268.     kPCCardCustomInfoVersion    = 0;
  269.  
  270.  
  271. TYPE
  272.     PCCardCustomResourcePtr = ^PCCardCustomResource;
  273.     PCCardCustomResource = RECORD
  274.         version:                LONGINT;
  275.         customIconID:            INTEGER;                                {     ICN#, etc. resource ID }
  276.         customStringsID:        INTEGER;                                {     STR# resource ID }
  277.         customTypeStringIndex:    INTEGER;
  278.         customHelpStringIndex:    INTEGER;
  279.         customAction:            OSType;
  280.         customActionParam1:        LONGINT;
  281.         customActionParam2:        LONGINT;
  282.     END;
  283.  
  284. {$ENDC}
  285.  
  286. {$ALIGN RESET}
  287. {$POP}
  288.  
  289. {$SETC UsingIncludes := PCCardEnablerPluginIncludes}
  290.  
  291. {$ENDC} {__PCCARDENABLERPLUGIN__}
  292.  
  293. {$IFC NOT UsingIncludes}
  294.  END.
  295. {$ENDC}
  296.